You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Thorsten Schöning (Jira)" <lo...@logging.apache.org> on 2020/08/23 14:19:00 UTC
[jira] [Commented] (LOGCXX-510) Build problems using CMAKE and
Visual Studio 2019 Community
[ https://issues.apache.org/jira/browse/LOGCXX-510?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17182702#comment-17182702 ]
Thorsten Schöning commented on LOGCXX-510:
------------------------------------------
I had another look at building APR etc. using CMAKE and am running into trouble when building APR-Util. It seems that VS wants to build a DLL, tries to link APR and fails. The following is what VS does:
{quote}
cmd.exe /C "cd . && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_dll --intdir=CMakeFiles\libaprutil-1.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\mt.exe --manifests -- C:\PROGRA~2\MICROS~4\2019\COMMUN~1\VC\Tools\MSVC\1427~1.291\bin\Hostx64\x64\link.exe /nologo CMakeFiles\libaprutil-1.dir\buckets\apr_brigade.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_alloc.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_eos.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_file.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_flush.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_heap.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_mmap.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pipe.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pool.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_refcount.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_simple.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_socket.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_crypto.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_md4.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_md5.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_passwd.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_sha1.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_siphash.c.obj CMakeFiles\libaprutil-1.dir\crypto\crypt_blowfish.c.obj CMakeFiles\libaprutil-1.dir\crypto\getuuid.c.obj CMakeFiles\libaprutil-1.dir\crypto\uuid.c.obj CMakeFiles\libaprutil-1.dir\dbd\apr_dbd.c.obj CMakeFiles\libaprutil-1.dir\dbm\apr_dbm.c.obj CMakeFiles\libaprutil-1.dir\dbm\apr_dbm_sdbm.c.obj CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm.c.obj CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_hash.c.obj CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_lock.c.obj CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_pair.c.obj CMakeFiles\libaprutil-1.dir\encoding\apr_base64.c.obj CMakeFiles\libaprutil-1.dir\hooks\apr_hooks.c.obj CMakeFiles\libaprutil-1.dir\memcache\apr_memcache.c.obj CMakeFiles\libaprutil-1.dir\misc\apr_date.c.obj CMakeFiles\libaprutil-1.dir\misc\apr_queue.c.obj CMakeFiles\libaprutil-1.dir\misc\apr_reslist.c.obj CMakeFiles\libaprutil-1.dir\misc\apr_rmm.c.obj CMakeFiles\libaprutil-1.dir\misc\apr_thread_pool.c.obj CMakeFiles\libaprutil-1.dir\misc\apu_dso.c.obj CMakeFiles\libaprutil-1.dir\misc\apu_version.c.obj CMakeFiles\libaprutil-1.dir\redis\apr_redis.c.obj CMakeFiles\libaprutil-1.dir\strmatch\apr_strmatch.c.obj CMakeFiles\libaprutil-1.dir\uri\apr_uri.c.obj CMakeFiles\libaprutil-1.dir\xlate\xlate.c.obj CMakeFiles\libaprutil-1.dir\xml\apr_xml.c.obj CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_stub.c.obj CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_url.c.obj CMakeFiles\libaprutil-1.dir\libaprutil.rc.res /out:libaprutil-1.dll /implib:libaprutil-1.lib /pdb:libaprutil-1.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
{quote}
That line contains "/out:libaprutil-1.dll", so it seems to try to create a DLL. When doing the same for APR, things succeed and the expected files are created:
{quote}
-- Up-to-date: C:/Users/tschoening/Documents/Svn/Src/Libs/trunk/C/X-OS/APR/apr/1.7.0/src/out/install/x64-Debug/lib/libapr-1.lib
-- Up-to-date: C:/Users/tschoening/Documents/Svn/Src/Libs/trunk/C/X-OS/APR/apr/1.7.0/src/out/install/x64-Debug/bin/libapr-1.dll
{quote}
Anyway, linking APR-Util fails with errors like the following, where "apr_vformatter" should be contained in APR:
{quote}
C:\Users\tschoening\Documents\Svn\Src\Libs\trunk\C\X-OS\APR\apr-util\1.6.1\src\apr_brigade.c.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "apr_vformatter" in Funktion "apr_brigade_vprintf".
{quote}
The following is the command line created for the linker and what I'm wondering is why it doesn't contain any reference to APR or EXPAT. I'm somewhat sure, though, to have configured the correct output directories of both for APR-Util, because otherwise APR-Util simply couldn't build. Using ProcMon, I can even see successful attempts to access the directory I configured for APR_INCLUDE_DIR, while I don't see any attempts to use a pretty similar configured APR_LIBRARIES.
{quote}
LINK Pass 1: command "C:\PROGRA~2\MICROS~4\2019\COMMUN~1\VC\Tools\MSVC\1427~1.291\bin\Hostx64\x64\link.exe /nologo CMakeFiles\libaprutil-1.dir\buckets\apr_brigade.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_alloc.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_eos.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_file.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_flush.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_heap.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_mmap.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pipe.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pool.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_refcount.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_simple.c.obj CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_socket.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_crypto.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_md4.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_md5.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_passwd.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_sha1.c.obj CMakeFiles\libaprutil-1.dir\crypto\apr_siphash.c.obj CMakeFiles\libaprutil-1.dir\crypto\crypt_blowfish.c.obj CMakeFiles\libaprutil-1.dir\crypto\getuuid.c.obj CMakeFiles\libaprutil-1.dir\crypto\uuid.c.obj CMakeFiles\libaprutil-1.dir\dbd\apr_dbd.c.obj CMakeFiles\libaprutil-1.dir\dbm\apr_dbm.c.obj CMakeFiles\libaprutil-1.dir\dbm\apr_dbm_sdbm.c.obj CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm.c.obj CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_hash.c.obj CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_lock.c.obj CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_pair.c.obj CMakeFiles\libaprutil-1.dir\encoding\apr_base64.c.obj CMakeFiles\libaprutil-1.dir\hooks\apr_hooks.c.obj CMakeFiles\libaprutil-1.dir\memcache\apr_memcache.c.obj CMakeFiles\libaprutil-1.dir\misc\apr_date.c.obj CMakeFiles\libaprutil-1.dir\misc\apr_queue.c.obj CMakeFiles\libaprutil-1.dir\misc\apr_reslist.c.obj CMakeFiles\libaprutil-1.dir\misc\apr_rmm.c.obj CMakeFiles\libaprutil-1.dir\misc\apr_thread_pool.c.obj CMakeFiles\libaprutil-1.dir\misc\apu_dso.c.obj CMakeFiles\libaprutil-1.dir\misc\apu_version.c.obj CMakeFiles\libaprutil-1.dir\redis\apr_redis.c.obj CMakeFiles\libaprutil-1.dir\strmatch\apr_strmatch.c.obj CMakeFiles\libaprutil-1.dir\uri\apr_uri.c.obj CMakeFiles\libaprutil-1.dir\xlate\xlate.c.obj CMakeFiles\libaprutil-1.dir\xml\apr_xml.c.obj CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_stub.c.obj CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_url.c.obj CMakeFiles\libaprutil-1.dir\libaprutil.rc.res /out:libaprutil-1.dll /implib:libaprutil-1.lib /pdb:libaprutil-1.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\libaprutil-1.dir/intermediate.manifest CMakeFiles\libaprutil-1.dir/manifest.res" failed (exit code 1120) with the following output:
Bibliothek "libaprutil-1.lib" und Objekt "libaprutil-1.exp" werden erstellt.
{quote}
Need to debug this further...
> Build problems using CMAKE and Visual Studio 2019 Community
> -----------------------------------------------------------
>
> Key: LOGCXX-510
> URL: https://issues.apache.org/jira/browse/LOGCXX-510
> Project: Log4cxx
> Issue Type: Bug
> Components: Build
> Affects Versions: 0.11.0
> Reporter: Thorsten Schöning
> Assignee: Thorsten Schöning
> Priority: Major
> Attachments: CMP00079.png, missing_log4cxx_rc.png, set_target_properties.png
>
>
> I just tested building log4cxx using CMAKE and Visual Studio 2019 Community. Things failed and I want to use this bug to document everything that I've found, because for some things I'm not sure how to handle them properly. Will create a new branch to maintain the fixes I came along, so that those can at best be later reviewed by others. The branch of interest is currently named "logcxx_510_cmake_vs2019_compat".
--
This message was sent by Atlassian Jira
(v8.3.4#803005)