opiviqo
V2EX  ›  问与答

请教一个关于 cmake 编译的问题(先编译库文件,再调用库文件的问题)

  •  
  •   opiviqo · Aug 9, 2018 · 1419 views
    This topic created in 2833 days ago, the information mentioned may be changed or developed.
    如图所示文件夹
    project_idr/

    ├── build

    ├── src
    │ 
    └── tests

    目标:
    src 为源文件( src )目录,编译为一个静态库文件;
    tests 为执行文件( bin )目录,链接 src 文件夹下的编译好的库文件,编译成多个执行文件;
    build 为 cmake 的文件夹。

    cmakelists.txt
    PROJECT(bns)
    CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
    ADD_SUBDIRECTORY(src)
    ADD_SUBDIRECTORY(tests)

    src/cmakelists.txt
    ... //省略一些子文件夹定义
    ADD_LIBRARY(bns STATIC ${BNS_DIR} ${COM_DIR} ${CRC_DIR} ${MASTER_DIR} ${SLAVE_DIR})

    tests/cmakelists.txt
    LINK_DIRECTORIES(${PROJECT_BINARY_DIR}/src)
    ADD_EXECUTABLE(bin main.c ${PROJECT_BINARY_DIR}/src/liba.a)
    TARGET_LINK_LIBRARIES(bin ${PROJECT_BINARY_DIR}/src/liba.a)

    那么问题来了:
    1,去掉 ADD_SUBDIRECTORY(tests)语句,仅仅编译成一个库文件,可以正常生成库文件;然后,再加入前面的语句,继续编译就可以得到 bin 文件。但是想直接编译得到 bin 文件,就提示找不到库文件。每次编译两次肯定是有问题的,请教各位大佬。

    CMake Error at tests/CMakeLists.txt:2 (ADD_EXECUTABLE):
    Cannot find source file:
    1 replies    2018-08-09 10:57:40 +08:00
    opiviqo
        1
    opiviqo  
    OP
       Aug 9, 2018
    为什么排版乱了。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2666 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:59 · PVG 23:59 · LAX 08:59 · JFK 11:59
    ♥ Do have faith in what you're doing.